package com.yun2.bms.controller;

import com.yun2.bms.dao.IUserDao;
import com.yun2.bms.dao.impl.UserDaoImpl;
import com.yun2.bms.model.User;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

/**
 * author: youli
 * qq: 27855162@qq.com
 * date: 2020/5/19
 */

public class LoginController implements Initializable{

    //如果要这样用户信息是否正确，则必须引入用户Dao
    private IUserDao userDao = new UserDaoImpl();

    @FXML
    private Text loginMessage;

    @FXML
    private PasswordField password;

    @FXML
    private Button btnLogin;

    @FXML
    private TextField tfLoginName;

    @FXML
    void login(ActionEvent event) throws IOException {
        String loginName = this.tfLoginName.getText();
        String password = this.password.getText();
        //当用户名或者密码为空，则不允许做登录验证,提示用户名或者密码不能为空
        if (StringUtils.isBlank(loginName) || StringUtils.isBlank(password)) {
            this.loginMessage.setText("用户名或者密码不能为空！");
            return;
        }
        //如果用户名和密码不正确，提示用户名或者密码错误
        //如果用户名和密码正确，提示登录成功
        User loginUser = this.userDao.login(loginName, password);
        if ( loginUser == null) {
            this.loginMessage.setText("用户名或者密码错误！");
            return;
        } else {
            this.loginMessage.setText("登录成功！");
            //创建一个Stage舞台，与main.fxml有关的，并显示该舞台，同时关闭登录窗口
            Stage mainStage = new Stage();
            //读入布局
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/fxml/main.fxml"));
            //创建一个与main.fxml根布局元素相同类型的布局对象root
            BorderPane root = fxmlLoader.load();

            //可以通过fxmlLoader获取MainController。
            MainController mainController = fxmlLoader.getController();
            mainController.setLoginUser(loginUser);

            Scene scene = new Scene(root);
            mainStage.setTitle("图书管理系统");
            //最大化窗口
            mainStage.setMaximized(false);
            mainStage.setScene(scene);
            mainStage.getIcons().add(new Image("/images/logo.png"));
            //显示主窗口
            mainStage.show();

            //关闭登录窗口，首先要拿到登录窗口
            Stage loginStage = (Stage) this.btnLogin.getScene().getWindow();
            loginStage.close();
        }
    }


    @Override
    public void initialize(URL location, ResourceBundle resources) {
        //为方便调试，将用户名和密码初始化到控件中
        this.tfLoginName.setText("admin");
        this.password.setText("123456");
    }
}
